Qt GUI

Qt GUI模块为窗口系统集成,事件处理,OpenGL和OpenGL ES集成,2D图形,基本图像,字体和文本提供类。 这些类由Qt的用户界面技术内部使用,也可以直接使用,例如使用低级别的OpenGL ES图形API编写应用程序。

对于编写用户界面的应用程序开发人员来说,Qt提供了更高层次的API,比如Qt Quick,比Qt GUI模块中的启动器更合适。

Getting Started

要包含模块类的定义,请使用以下指令:

#include <QtGui>

如果您使用qmake构建项目,则默认包含Qt GUI。 要禁用Qt GUI,请将以下行添加到.pro文件中:

QT -= gui

Application Windows

Qt GUI模块中最重要的类是QGuiApplicationQWindow 想要在屏幕上显示内容的Qt应用程序需要使用这些应用程序。 QGuiApplication包含主事件循环,其中处理和分派来自窗口系统和其他源的所有事件。 它还处理应用程序的初始化和最终化。

QWindow类表示底层窗口系统中的一个窗口。 它提供了许多虚拟函数来处理来自窗口系统的事件(QEvent),例如触摸输入,曝光,焦点,击键和几何变化。

2D Graphics

Qt GUI模块包含2D图形,图像,字体和高级版式的类。

使用曲面类型QSurface :: RasterSurface创建的QWindow可以与QBackingStoreQPainter,Qt's高度优化的2D矢量图形API。 QPainter支持绘图线,多边形,矢量路径,图像和文本。 有关更多信息,请参见Paint SystemRaster Window Example

Qt可以使用QImageQPixmap类加载和保存图像。 默认情况下,Qt支持最常见的图像格式,包括JPEG和PNG等。 用户可以通过QImageIOPlugin类添加对其他格式的支持。 有关更多信息,请参阅读写图像文件

Qt中的排版是通过QTextDocument完成的,它将QPainter API与Qt的字体类(主要是QFont)结合使用。 可以使用更多低级别的API来处理文本和字体的应用程序,比如QRawFontQGlyphRun

OpenGL and OpenGL ES Integration

QWindow支持使用OpenGL和OpenGL ES进行渲染,具体取决于平台支持的内容。 通过将QWindow的曲面类型设置为QSurface :: OpenGLSurface,使用QSurfaceFormat选择格式属性,然后创建QOpenGLContext来管理本机OpenGL上下文。 此外,Qt还具有Q0penGLPaintDevice,它可以使用OpenGL加速的QPainter渲染,以及方便的类来简化OpenGL代码的编写并隐藏扩展处理的复杂性以及OpenGL ES 2和桌面OpenGL的区别。 便利类包括QOpenGLFunctions,它允许应用程序在桌面OpenGL上使用所有OpenGL ES 2功能,而无需手动解析OpenGL函数指针,从而允许跨平台开发针对移动或嵌入式设备的应用程序,以及一些在简单的Qt API中封装原生OpenGL功能的类:

最后,为了更好地支持OpenGL的新版本(3.0及更高版本),还提供了一个版本化的函数包装机制:QOpenGLFunction_N_N类的系列公开了给定OpenGL版本和配置文件中的所有函数,可以轻松开发桌面应用程序依赖于现代桌面型OpenGL功能。

有关更多信息,请参阅OpenGL Window Example

Qt GUI模块还包​​含一些数学类,以帮助进行与3D图形相关的最常见的数学运算。 这些类包括QMatrix4x4 QVector4DQQuaternion

QSurface :: OpenGLSurface创建的QWindow可以与QPainterQOpenGLPaintDevice结合使用,以使OpenGL硬件加速2D图形,牺牲一些视觉质量。

Qt GUI Prior to Qt 5.0

在Qt 5.0之前,Qt GUI模块是Qt中与图形用户界面有关的所有东西的整体容器,包括Qt构件集,项目视图,图形视图框架以及打印。 从Qt 5开始,这些类已被移至Qt Widgets模块。 打印已转移到Qt打印支持模块。 请注意,这些模块可以从Qt安装中排除。

Qt GUI现在只包含一小组启动器,这些启动器通常对所有图形应用程序都有用。

Drag and Drop

更多信息在Drag and Drop

Licenses and Attributions

Qt GUI可以从The Qt Company的商业许可下获得。 另外,它可以通过免费软件许可证获得。 自Qt 5.4以来,这些免费软件许可证是GNU通用公共许可证第3版GNU通用公共许可证版本2 See Qt Licensing for further details.

此外,Qt 5.9.5中的Qt GUI可能包含下列许可证的第三方模块:

ANGLE Library

BSD 3-clause "New" or "Revised" License

ANGLE: Array Bounds Clamper for WebKit

BSD 2-clause "Simplified" License

ANGLE: Murmurhash

Public Domain

ANGLE: Systeminfo

BSD 2-clause "Simplified" License

ANGLE: trace_event

BSD 3-clause "New" or "Revised" License

Anti-aliasing rasterizer from FreeType 2

Freetype Project License or GNU General Public License v2.0 only

Cocoa Platform Plugin

BSD 3-clause "New" or "Revised" License

Freetype 2

Freetype Project License or GNU General Public License v2.0 only

Freetype 2 - Bitmap Distribution Format (BDF) support

MIT License

Freetype 2 - Portable Compiled Format (PCF) support

MIT License

Freetype 2 - zlib

zlib License

HarfBuzz

MIT License

HarfBuzz-NG

MIT License

IAccessible2 IDL Specification

BSD 3-clause "New" or "Revised" License

LibJPEG

Independent JPEG Group License

LibPNG

libpng License

Native Style for Android

Apache License 2.0

OpenGL ES 2 Headers

MIT License

OpenGL Headers

MIT License

Pixman

MIT License

Smooth Scaling Algorithm

BSD 2-clause "Simplified" License and Imlib2 License

Wintab API

Public Domain

XCB

MIT License

xkbcommon

MIT Licenses (with no-advertisement clause)

Reference

© 2018 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.